草庐IT

反射简化 JDBC ResultSet

全部标签

java - 为什么我的反射加载奇怪的类?

我正在尝试使用反射来查看我是否可以输入类名并且我的应用程序将加载该类并创建它的一个实例。经过几次尝试后,我发现我不能只在Class.forName()中粘贴一个没有包名的类名,所以我最终尝试获取已加载的所有可用包的列表并尝试用每个包名称加载我输入的类,直到成功为止。这是我目前所得到的:BufferedReaderconsole=newBufferedReader(newInputStreamReader(System.in));Strings="";do{ClassLoaderclsldr=ClassLoader.getSystemClassLoader();Package[]pkgs

java - 如何在 Java 中通过反射调用代理(Spring AOP)上的方法?

接口(interface):publicinterfaceManager{Objectread(Longid);}实现此接口(interface)的类:@TransactionalPublicclassManagerImplimplementsManager{@OverridepublicObjectread(Longid){//Implementationhere}}ManagerImpl的一个方面:@AspectpublicclassInterceptor{@Pointcut("execution(public*manager.impl.*.*(..))")publicvoidex

java - 通过反射 API 使 Java 类成为非最终类

我有一个类似于下面的Java类:publicfinalclassNode{publicNode(){}}我已经学会了如何通过反射API更改“最终”字段的可访问性,但这是否也适用于类?我可以在运行时将最终类转换为非最终类吗? 最佳答案 您可以使用ASM等库重写类文件。在运行时更改类的final状态可能没有意义,因为它在编译时需要是非最终的才能编译子类。 关于java-通过反射API使Java类成为非最终类,我们在StackOverflow上找到一个类似的问题:

java - 使用内部类来反射(reflect)真实事物的关系

这更像是一个概念性问题。我知道如何做我想做的事。不过,我想知道这样做是否正确。我试图表现一些在现实生活中涉及一些嵌套的东西。它是一个文档,指定要使用一组项目执行的Activity。一个文档可能涵盖多个项目,每个项目可能有多个Activity。因此层次结构将是文档->项目->Activity。我目前的想法是表示这将是一个顶级类Document,它包含一个内部类ItemProgram,它本身包含一个内部类Activity。是的,这是两层嵌套。publicclassDocument{//PropertiesofthedocumentitselfprivateMapitemPrograms;/

java - 以编程方式指定 Java 类文字(无需硬编码)?反射?

问题:行内Objecto=myC.getConstructor(short.class).newInstance(myC.cast(pPrim));有没有办法避免硬编码“short.class”,而是从pPrim获取文字?我从Createnewobjectusingreflection?中的答案中得到使用“short.class”的想法我不应该使用“To=...(例如,对于Byte或Short)而不是Objecto=...?我认为我的方法与ClassLiteralsasRuntime-TypeTokens末尾的方法几乎相同.我想做的是反射(reflection)吗?背景:我正在学习Fi

java - 静态语言和反射

据我所知,反射是在运行时创建/修改源代码的能力。来自维基百科:发现和修改源代码结构(例如代码块,类、方法、协议(protocol)等)作为第一类对象运行。转换与类或函数的符号名称匹配的字符串引用或调用该类或函数。评估一个字符串,就好像它是运行时的源代码语句一样。为该语言的字节码创建一个新的解释器,以提供一个新的编程结构的意义或目的。动态语言是我们可以在运行时求值(直接从字符串求值)的语言。来自维基百科:“程序的扩展,通过添加新代码,通过扩展对象和定义,或者通过修改类型系统”好的,现在我的问题是:静态语言(没有eval能力)如何有反射(例如Java)?(新的源代码不求值?:/)提前致谢!

java - 无法通过反射 hibernate 获取字段值

我在jpa中更新对象时遇到问题我有bean用户publicclassUser{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id",unique=true,nullable=false)privateLongid;@Column(name="name",nullable=false)privateStringname;@OneToMany(fetch=FetchType.EAGER)@JoinColumn(name="fk_program_rating")privateListratingList=n

Java 反射与代码生成

今天我想知道为什么像`Hibernate这样的框架在编译/应用程序启动期间使用反射而不是代码生成(例如使用像BCEL或ASM这样的库)。是否由于历史原因(编写Hibernate时没有这样的库可以动态生成字节码)现在每个人都使用这种方法?我认为使用生成代码的方法会比使用反射的方法更快。 最佳答案 是的,Hibernate可能会从代码生成中受益,尽管利润可能没有您想象的那么大。首先,Reflection在底层使用字节码生成,而且速度并不太慢。您不能仅使用字节码生成来做某些事情。例如。反射允许您访问私有(private)字段并调用私有(p

java - 如何以反射方式遍历数组字段?

我有Classclass1=obj.getClass();Field[]fields=class1.getDeclaredFields();for(FieldaField:fields){aField.setAccessible(true);if(aField.getType().isArray()){for(??vals:aField){System.out.println(vals);}}} 最佳答案 你会使用这样的东西:if(aField.getType().isArray()){Objectarray=aField.get(

Java:定位反射代码用法

我们有庞大的代码库,有些类经常在整个代码中通过反射使用。我们可以安全地删除类并且编译器很高兴,但是其中一些是使用反射动态使用的,所以除了搜索字符串之外我无法找到它们......是否有一些针对Java代码的反射浏览器? 最佳答案 没有简单的工具可以做到这一点。但是,您可以改用代码覆盖率。它的作用是为您提供所有已执行代码行的报告。这在改进测试代码或删除无用代码方面更加有用。根据定义,Reflections是非常动态的,您必须运行正确的代码才能看到它会做什么。也就是说,您必须进行合理的测试。如果您可以访问此代码,则可以将日志记录添加到Re